Ітераційні методи розв’язування систем лінійних алгебраїчних рівнянь

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2007
Тип роботи:
Звіт про виконання лабораторної роботи
Предмет:
Алгоритмічні основи криптології
Група:
ІБ – 44

Частина тексту файла

Міністерство освіти та науки України Національний університет “Львівська політехніка” Звіт про виконання лабораторної роботи №2 з курсу “Алгоритмічні основи криптології” на тему: “ Ітераційні методи розв’язування систем лінійних алгебраїчних рівнянь ” Мета роботи: вивчити найпоширеніші ітераційні методи розв’язку систем лінійних алгебраїчних рівнянь, навчитись розв’язувати на ЕОМ системи алгебраїчних рівнянь, провести порівняльний аналіз розглянутих методів. Завдання: написати програму на мові програмування Сі яка б розв’язувала систему лінійних алгебраїчних рівнянь методом Зейделя. 24,21+s 2,42 3,85 2,31 31,49 1,52 3,49 4,84 28,72+s 30,24 40,95-r 42,81 де s = 0.2*k , r = 0.2*p, k=2, p=2. Блок – схема алгоритму роботи програми  Текст програми: #include <stdio.h> #include <math.h> #include <conio.h> #define n 3 #define m 10 #define e 0.0001 typedef enum {False,True}Boolean; main() { float a[n][n],b[n],l[n][n+1],t[n],x[n][m-1]; float s=0,s1=0; int i,j,k,h,p; Boolean d; for(i=0;i<n;i++) for (j=0;j<n;j++){ printf("a[%i,%i]=",i+1,j+1); scanf("%f",&a[i][j]); } for(i=0;i<n;i++){ printf("b[%i]=",i+1); scanf("%f",&b[i]); } for(i=0;i<n;i++){ h=0; for(j=0;j<n;j++){ if (i==j) continue; l[i][h]=(-a[i][j])/a[i][i]; h++; } } for(i=0;i<n;i++) t[i]=b[i]/a[i][i]; k=0; for(i=0;i<n;i++) x[i][k]=t[i]; do { k++; for(i=0;i<n;i++){ s=0;s1=0; for(j=0;j<=(i-1);j++) s1+=(l[i][j]*x[j][k]); for(j=i;j<=n;j++){ if (i==j) continue; s+=(l[i][j-1]*x[j][k-1]); } x[i][k]=t[i]+s+s1; } for (i=0;i<n;i++){ if ((fabs(x[i][k]-x[i][k-1]))<e) p=True; else{ p=False; break; } } } while (p!=True); puts("Rezultaty:"); for(i=0;i<n;i++) printf(" x[%d]=%5.5f",i+1,x[i][k]); puts("\nPerevirka:"); for(i=0;i<n;i++){ s=0; for(j=0;j<n;j++) s+=(x[j][k]*a[i][j]); printf(" s=%5.5f\n",s); } getchar(); } Результат виконання програми:  Висновок: Розв’язання систем лінійних алгебраїчних рівнянь методом простої ітерації або методом Зейделя можна досить легко реалізувати на ЕОМ за допомогою програми в середовищі Сі. Основна відмінність методу Зейделя полягає в тому, що при обчисленні кожного наступного наближення невідомого аргументу враховуються вже знайдені раніше невідомі поточного наближення. Розв’язання таких систем на ЕОМ є дуже актуальним, оскільки цей процес є набагато легшим та короткотривалішим ніж розв’язання систем лінійних алгебраїчних рівнянь вручну.
Антиботан аватар за замовчуванням

01.01.1970 03:01

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини